# Boost Ratio Library test Jamfile

# Copyright Beman Dawes 2003, 2006, 2008

# Distributed under the Boost Software License, Version 1.0.
# See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt

# See library home page at http://www.boost.org/libs/ratio

# uncomment one if the above lines if you build outside the Boost release
#local BOOST_ROOT = /boost_1_41_0 ;
#local BOOST_ROOT = c:/cygwin/boost_1_41_0 ;

if ! $(BOOST_ROOT)
{
    BOOST_ROOT = [ modules.peek : BOOST_ROOT ] ;
}

project
    : requirements
        #<os>LINUX:<threading>multi
        # uncomment the line above if you build outside the Boost release
        #<include>$(BOOST_ROOT)
        # uncomment the line above if you build outside the Boost release
        #<include>../../..
        <toolset>msvc:<asynch-exceptions>on
        <define>BOOST_ENABLE_WARNINGS
        <define>BOOST_RATIO_USES_MPL_ASSERT
        <define>BOOST_RATIO_VERSION=2
        <define>BOOST_MPL_NEXT_PRIOR_EXT
        #<toolset>sun:<define>BOOST_COMMON_TYPE_DONT_USE_TYPEOF
        #<toolset>sun:<define>BOOST_TYPEOF_EMULATION
        <toolset>sun:<define>__typeof__=__typeof__ 
        <warnings>all
        <toolset>gcc:<cxxflags>-Wextra
        <toolset>gcc:<cxxflags>-Wno-long-long
        <toolset>gcc:<cxxflags>-pedantic
        <toolset>darwin:<cxxflags>-Wextra
        <toolset>darwin:<cxxflags>-Wno-long-long
        <toolset>darwin:<cxxflags>-pedantic
        #<toolset>pathscale:<cxxflags>-Wextra
        <toolset>pathscale:<cxxflags>-Wno-long-long
        <toolset>pathscale:<cxxflags>-pedantic
        <toolset>clang:<cxxflags>-Wextra
        <toolset>clang:<cxxflags>-pedantic
        <toolset>clang:<cxxflags>-Wno-long-long
        #<toolset>gcc-mingw-4.5.0:<cxxflags>-Wno-missing-field-initializers
        #<toolset>gcc-mingw-4.5.0:<cxxflags>-fdiagnostics-show-option
        #<toolset>gcc-mingw-4.6.0:<cxxflags>-fdiagnostics-show-option
        <toolset>msvc:<cxxflags>/wd4127
# Note: Some of the remarks from the Intel compiler are disabled
# remark #1418: external function definition with no prior declaration
# remark #304: access control not specified ("public" by default)
        <toolset>intel:<cxxflags>-wd304,1418
    ;

    test-suite "ratio_ratio"
        :
        [ compile typedefs_pass.cpp ]
        [ compile ratio_ratio/ratio_pass.cpp ]
        [ compile-fail ratio_ratio/ratio1_fail.cpp ]
        [ compile-fail ratio_ratio/ratio2_fail.cpp ]
        [ compile-fail ratio_ratio/ratio3_fail.cpp ]
        [ compile-fail ratio_ratio/ratio4_fail.cpp ]
        ;

    test-suite "ratio_io"
        :
        [ compile-fail ratio_io/ratio_io_fail.cpp ]
        [ run ratio_io/ratio_io_pass.cpp ]
        ;

    test-suite "ratio_arithmetic"
        :
        [ compile ratio_arithmetic/ratio_add_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_subtract_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_multiply_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_divide_pass.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_add_fail.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_add_2_fail.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_add_3_fail.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_subtract_fail.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_multiply_fail.cpp  ]
        [ compile-fail ratio_arithmetic/ratio_divide_fail.cpp  ]
        [ compile ratio_arithmetic/ratio_negate_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_sign_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_abs_pass.cpp  ]
        [ compile ratio_arithmetic/ratio_power_pass.cpp  ]
        ;

    test-suite "ratio_comparison"
        :
        [ compile ratio_comparison/ratio_equal_pass.cpp  ]
        [ compile ratio_comparison/ratio_not_equal_pass.cpp  ]
        [ compile ratio_comparison/ratio_less_pass.cpp  ]
        [ compile ratio_comparison/ratio_less_equal_pass.cpp  ]
        [ compile ratio_comparison/ratio_greater_pass.cpp  ]
        [ compile ratio_comparison/ratio_greater_equal_pass.cpp  ]
        ;

    test-suite "examples"
        :
        [ run ../example/si_physics.cpp ]
        [ run ../example/display_ex.cpp ]
        ;

    test-suite "ratio_ext"
        :
        [ run ratio_extensions/ratio_ext_pass.cpp  ]
        [ compile ratio_extensions/mpl_plus_pass.cpp  ]
        [ compile ratio_extensions/mpl_minus_pass.cpp  ]
        [ compile ratio_extensions/mpl_times_pass.cpp  ]
        [ compile ratio_extensions/mpl_divides_pass.cpp  ]
        [ compile ratio_extensions/mpl_negate_pass.cpp  ]
        [ compile ratio_extensions/mpl_sign_pass.cpp  ]
        [ compile ratio_extensions/mpl_abs_pass.cpp  ]
        [ compile ratio_extensions/mpl_equal_to_pass.cpp  ]
        [ compile ratio_extensions/mpl_not_equal_to_pass.cpp  ]
        [ compile ratio_extensions/mpl_less_pass.cpp  ]
        [ compile ratio_extensions/mpl_less_equal_pass.cpp  ]
        [ compile ratio_extensions/mpl_greater_pass.cpp  ]
        [ compile ratio_extensions/mpl_greater_equal_pass.cpp  ]
        [ compile ratio_extensions/mpl_arithmetic_pass.cpp  ]
        [ compile ratio_extensions/mpl_comparison_pass.cpp  ]
        [ compile ratio_extensions/mpl_rational_constant_pass.cpp  ]

        ;

    #test-suite "tickets"
    #    :
    #    [ run test_6498_pass.cpp  ]
    #    ;
